package br.com.batista.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import br.com.batista.jdbc.ConnectionFactory;
import br.com.batista.jdbc.modelo.Contato;


public class ContatoDAO {
	private Connection conn;
	
	public ContatoDAO() {
		this.conn = new ConnectionFactory().getConnection();
	}
	
	public void adiciona(Contato contato) {
		
		String sql = "insert into contatos (nome, email, endereco, dataNascimento) values (?,?,?,?)";
		
		try {
			PreparedStatement stmt = conn.prepareStatement(sql);
			
			stmt.setString(1,contato.getNome());
			stmt.setString(2,contato.getEmail());
			stmt.setString(3,contato.getEndereco());
			stmt.setDate(4,contato.getDataNascimento());
			
			stmt.execute();
			stmt.close();

		} catch (Exception e) {
			throw new RuntimeException(e);
			// TODO: handle exception
		}
	}
	
	public List<Contato> getLista() {
		try {
			List<Contato> contatos = new ArrayList<Contato>();
			PreparedStatement stmt = this.conn.prepareStatement("select * from contatos");
			ResultSet rs = stmt.executeQuery();
			
			while (rs.next()) {
				
				Contato contato = new Contato();
				contato.setId(rs.getLong("id"));
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
				
				// monta data
				contato.setDataNascimento(rs.getDate("dataNascimento"));
				
				contatos.add(contato);
				
			}
			
			rs.close();
			stmt.close();
			return contatos;
			
		} 
		catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	

}
